using System.Security;
using System.Transactions;
using Oracle.ManagedDataAccess.Client;

namespace OracleInternal.MTS
{
	internal abstract class PSPETxnManagerBase : IPromotableSinglePhaseNotification, ITransactionPromoter
	{
		internal OracleTransaction m_oraTransaction;

		internal OracleCredential m_orclCredential;

		internal SecureString m_securePassword;

		internal SecureString m_secureProxyPassword;

		internal bool m_bLocalTxnPromoted;

		internal string m_localTxnIdentifier;

		internal bool m_bConnectionClosed;

		public abstract void Initialize();

		public abstract void Rollback(SinglePhaseEnlistment singlePhaseEnlistment);

		public abstract void SinglePhaseCommit(SinglePhaseEnlistment singlePhaseEnlistment);

		public abstract byte[] Promote();
	}
}
